<?php

include DRA_PLUGIN_PATH . 'mpdf/mpdf.php';

class PdfService extends Model {

    /**
     * @var AtendimentoService
     */
    private $atendimentoService;

    public function injectDependencies() {
        $this->atendimentoService = AtendimentoService::getInstance();
    }

    public function sectorReport($ArFilter = false) {
        $ArHeaders = array(
            'Setor',
            array('CI' => 'Chamado Interno'),
            array('CE' => 'Chamado Externo'),
            array('CT' => 'Chamado Telefônico'),
            array('CC' => 'Clientes Cadastrados'),
            array('AC' => 'Aguardando Resposta'),
            array('CP' => 'Chamados Perfeitos')
        );

        $ArReportLines = $this->atendimentoService->generateSectorReport($ArFilter);

        $ArLines = array();
        foreach($ArReportLines as $Sector) {
            $ArLines[] = array(
                $Sector->getStNome(),
                $Sector->getReport('INTERNO'),
                $Sector->getReport('EXTERNO'),
                $Sector->getReport('TELEFONICO'),
                $Sector->getReport('CLIENTES_CADASTRADOS'),
                $Sector->getReport('CHAMADOS_NAO_FECHADOS'),
                $Sector->getReport('FINALIZADOS_1_RESPOSTA')
            );
        }

        $Pdf = $this->generatePdf('Relatorio_Setor', 7, 'Relatório de Setor', $ArHeaders, $ArLines);
        return $Pdf;
    }

    public function departamentReport($ArFilter = false) {
        $ArHeaders = array(
            'Departamento',
            array('CI' => 'Chamado Interno'),
            array('CE' => 'Chamado Externo'),
            array('CT' => 'Chamado Telefônico'),
            array('CC' => 'Clientes Cadastrados'),
            array('AC' => 'Aguardando Resposta'),
            array('CP' => 'Chamados Perfeitos')
        );

        $ArReportLines = $this->atendimentoService->generateDepartamentReport($ArFilter);

        $ArLines = array();
        foreach($ArReportLines as $Departament) {
            $ArLines[] = array(
                $Departament->getStNome(),
                $Departament->getReport('INTERNO'),
                $Departament->getReport('EXTERNO'),
                $Departament->getReport('TELEFONICO'),
                $Departament->getReport('CLIENTES_CADASTRADOS'),
                $Departament->getReport('CHAMADOS_NAO_FECHADOS'),
                $Departament->getReport('FINALIZADOS_1_RESPOSTA')
            );
        }

        $Pdf = $this->generatePdf('Relatorio_Departamento', 7, 'Relatório de Departamento', $ArHeaders, $ArLines);
        return $Pdf;
    }

    public function individualReport($ArFilter = false) {
        $ArHeaders = array(
            'Usuário',
            array('CI' => 'Chamado Interno'),
            array('CE' => 'Chamado Externo'),
            array('CT' => 'Chamado Telefônico'),
            array('CC' => 'Clientes Cadastrados'),
            array('AC' => 'Aguardando Resposta'),
            array('CP' => 'Chamados Perfeitos')
        );

        $ArReportLines = $this->atendimentoService->generateIndividualReport($ArFilter);

        $ArLines = array();
        foreach($ArReportLines as $Usuario) {
            $ArLines[] = array(
                $Usuario->getArDadosUsuario('StNome'),
                $Usuario->getReport('INTERNO'),
                $Usuario->getReport('EXTERNO'),
                $Usuario->getReport('TELEFONICO'),
                $Usuario->getReport('CLIENTES_CADASTRADOS'),
                $Usuario->getReport('CHAMADOS_NAO_FECHADOS'),
                $Usuario->getReport('FINALIZADOS_1_RESPOSTA')
            );
        }

        $Pdf = $this->generatePdf('Relatorio_Individual', 7, 'Relatório Individual', $ArHeaders, $ArLines);
        return $Pdf;
    }

    public function personalReport($ArFilter = false) {
        $ArHeaders = array(
            'Usuário',
            array('CI' => 'Chamado Interno'),
            array('CE' => 'Chamado Externo'),
            array('CT' => 'Chamado Telefônico'),
            array('CC' => 'Clientes Cadastrados'),
            array('AC' => 'Aguardando Resposta'),
            array('CP' => 'Chamados Perfeitos')
        );

        $Report = $this->atendimentoService->generateReportFromLoggedUser($ArFilter);

        $ArLines = array(
            array(
                Dracosys::getLoggedUser()->getArDadosUsuario('StNome'),
                $Report['InternalCalled'],
                $Report['ExternalCalled'],
                $Report['PhoneCalled'],
                $Report['CustomerRegister'],
                $Report['WaitingCustomerCalled'],
                $Report['PerfectCalled']
            )
        );

        $Pdf = $this->generatePdf('Relatorio_Pessoal', 7, 'Relatório Pessoal', $ArHeaders, $ArLines);
        return $Pdf;
    }

    private function generatePdf($StFileName, $ItColumn, $StTitle, $ArHeaders, $ArLines) {
        $Pdf = new PdfReport($StFileName, $ItColumn);
        $Pdf->addTitle($StTitle);
        $Pdf->addHeaders($ArHeaders);

        foreach($ArLines as $Line) {
            $Pdf->addLine($Line);
        }

        return $Pdf;
    }

}

?>
